rota                package:unknown                R Documentation

Clculo do caminho de um ponto at outro, com mudana de posio dos pontos ao longo do tempo

Description:

A funo calcula o melhor caminho de um ponto A at B, com possibilidade de paradas, sendo que os pontos alteram sua posio com o tempo. Na existncia de paradas, a rota ser calculada de trecho em trecho, at o ponto de destino. Ser retornado um resumo do melhor caminho escolhido e um mapa representando o trajeto.

Usage:

rota(posx, posy, t.partida=1, vel=5, p.partida, p.destino, p.parada=NULL, ordem.fixa=TRUE, encurtar="tempo.espera", tx.amostragem=1, hora1=0, dia1=0, xlab="Unidade de medida", ylab="Unidade de medida", main="Mapa do espao")

Arguments:


posx
		data frame da posio dos pontos no eixo x, em cada horrio amostrado, com taxa de amostragem constante. A primeira coluna deve conter os nomes dos pontos. 

posy
		data frame da posio dos pontos no eixo y, em cada horrio amostrado, com taxa de amostragem constante. A primeira coluna deve conter os nomes dos pontos.

t.partida
		 nmero da coluna, nos data.frames posx e posy, correspondente ao horrio de partida. Descontar a primeira coluna (dos caracteres). Por padro, t.partida ser igual a 1, ou seja, a primeira coluna de dados numricos.

vel
		velocidade do deslocamento,no formato: unidade de x e y/taxa de amostragem

p.partida
		nome do ponto de partida (character).

p.destino
		nome do ponto de destino (character).

p.parada
		vetor do(s) nome(s) do(s) ponto(s) de parada, se existirem (character).

ordem.fixa
		lgico; se FALSE, a ordem dos pontos de parada  calculada de forma a otimizar o tempo ou a distncia do deslocamento, a depender do critrio de "encurtar"; se TRUE, ser utilizada a ordem dos pontos definida em p.parada.

encurtar
		critrio pelo qual o caminho ser escolhido ("tempo.espera" ou "distancia"). Se encurtar = "tempo.espera", o caminho retornado ser aquele com menor durao e menor tempo de espera. Se encurtar = "distancia", o caminho retornado ser o mais curto, independente da durao do deslocamento.

tx.amostragem
		frequncia com que a posio dos pontos no espao foi registrada. Por padro, tx.amostragem=1, o que significa que os registros foram feitos a cada hora.

hora1
		horrio de partida real. Por padro, o horrio de partida  0 horas. Os minutos e segundos devem ser representados como dcimos. Por exemplo: escrever 1,5 para se referir a 01:30. 

dia1
		dia de partida real. Por padro, o dia de partida  0.

xlab
		legenda para o eixo x do mapa

ylab
		legenda para o eixo y do mapa

main
		ttulo do mapa


Details:

O formato dos data.frames deve ser:

>posx
  point.name positionx.time1 positionx.time2 positionx.time3	...
1  character        numeric        numeric        numeric
2  character        numeric        numeric        numeric
3  character        numeric        numeric        numeric
...

>posy
  point.name positiony.time1 positiony.time2 positiony.time3	...
1  character        numeric        numeric        numeric
2  character        numeric        numeric        numeric
3  character        numeric        numeric        numeric
...

A primeira coluna, em formato "character", deve conter o nome dos pontos. As colunas seguintes devem conter a posio de cada ponto no eixo x (posx) ou eixo y (posy), em cada horrio amostrado (time1, time2, time3, ...). 
O tempo decorrido entre time1 e time2 equivale  tx.amostragem, que deve ser constante. Por padro, o horrio de partida ser 0, utilizando a primeira coluna de amostras (t.partida=1). O valor 1 se refere  primeira coluna numrica dos dois data.frames (positionx.time1 e positiony.time1).

Value:

Retorna uma lista contendo um data.frame com o resumo da melhor rota encontrada, com base no critrio escolhido em "encurtar". No caso de empates, mais data.frames sero retornados, como outros itens na lista. Cada data.frame conter:

Nome.do.ponto	: Nome dos pontos presentes na rota, ordenados desde a partida at o destino.

Posio.em.x	: Posio no eixo x de cada ponto, no horrio de chegada em cada um.

Posio.em.y	: Posio no eixo y de cada ponto, no horrio de chegada em cada um.

Horario.de.chegada	: Horrio em que se chegar em cada ponto, baseado no valor de hora1 e taxa de amostragem.

Tempo.de.espera	: Intervalo de tempo entre a chegada do sujeito na posio, calculada de acordo com a velocidade (vel), e a chegada do ponto nessa posio.

Dia.de.chegada	: Dia em que se chegar em cada ponto, baseado no valor de hora1, dia1 e taxa de amostragem

 retornado, tambm, um mapa ilustrando a rota desde a partida at o destino, exibindo, para cada ponto, seu nome e horrio de chegada. No caso de empate, mais de um mapa ser exibido.

Warning:

 importante que a velocidade do deslocamento seja suficiente para compensar o movimento dos pontos. Se a velocidade for pequena (por exemplo, igual a uma unidade de x e y por taxa de amostragem),  necessrio que os pontos se desloquem dentro de um espao delimitado e que haja registro das posies durante um tempo mais longo. Caso contrrio, no haver rotas para serem retornadas.

Note:

O critrio encurtar=distancia escolher as rotas com as menores distncias, independente da durao da viagem. Portanto, o seu uso para data.frames com registros de vrios dias poder aumentar o tempo de viagem em mais de 24 horas, dependendo das distncias encontradas.

Author(s):

Milene Gomes Jannetti

Examples:

#### Criando dados ####
##Posicao x
set.seed(23)
posx<-data.frame(nome=letters, mresp=sample(seq(from=1, to=50, by=0.1), (length(letters))), stringsAsFactors=FALSE)
for (i in 3:97)
{
	for (j in 1:(length(letters)))
	{
	posx[j,i]<-sample(round(rnorm(20,posx[j,2],5),1),1)
	}
}

##Posicao y
set.seed(22)
posy<-data.frame(nome=letters, mresp=sample(seq(from=1, to=50, by=0.1), (length(letters))), stringsAsFactors=FALSE)
for (i in 3:97)
{
	for (j in 1:(length(letters)))
	{
	posy[j,i]<-sample(round(rnorm(20,posy[j,2],5),1),1)
	}
}

####Criando rota do ponto C at o ponto F, parando em A, L e G. ###

##Partida determinada para ocorrer em time3 (terceira coluna numrica dos data.frames).
##A coluna time3 foi amostrada no horrio 12:00 do dia 2, ento hora1=12 e dia1=2
##Velocidade do deslocamento  igual a 2 unidades de x e y/taxa de amostragem.
##Taxa de amostragem  igual a 0.5, ou seja, 30 minutos. 
##Deixar a funo escolher a ordem dos pontos de parada (ordem.fixa=FALSE), para otimizar o tempo do deslocamento (encurtar="tempo.espera").

rota(posx, posy, t.partida=3, vel=2, p.partida="c", p.destino="f", p.parada=c("a","l","g"), tx.amostragem=0.5, hora1=12, dia1=2, ordem.fixa=FALSE, encurtar="tempo.espera")

